import {getAddressList} from '../../api/api.js';
import {addAddress} from '../../api/api.js'; 
import {delAddress} from '../../api/api.js'; 
import {getAllProvince} from '../../api/api.js'; 




Page({

 
  /**
   * 页面的初始数据
   */
  data: {
    clickType: false,
    getAddress: [], //存地址信息,
    type: 'addressList', //用于判断传参
    addAdsFlag:false,
    // picker
    showPicker:false,
    showPickerCity:false,
    citys:[],
    provinces:[],

    // 表单里面的值
      phone:'',
      name: '',
      province: '省份',
      city: '城市',  
      address:'',
      isEdit:false,
      id:0,
  },
 

  onShow: function () {
    getAddressList().then(res => {
      console.log(res)
      if (res.data.code === 200) {
        // 获取成功
        console.log(res.data.data)
        this.setData({
           getAddress:res.data.data
        })
      } else {
        // 获取失败
        wx.showToast({
          title: res.data.errMsg,
        })
      }
    })
    // this.getAllProvince();
    
  },  

  // 设置默认地址
  setDefault(e){
      let info = e.currentTarget.dataset.info;
      info.isDefault = 1;
      info.openId = wx.getStorageSync('loginInfo').openid;




    addAddress(info).then(res => {
      console.log(res);
      if (res.data.code == 200) {
        wx.showToast({
          title: res.data.msg,
        })


        // 刷新页面
        this.onShow();
      } else {
        wx.showToast({
          title: res.data.msg,
          icon: 'none'
        })
      }
    })
     
  },

   

  // 点击删除按钮
  del(e){
     console.log(e.currentTarget.dataset.id);
    console.log(wx.getStorageSync('loginInfo').openid)
    delAddress(e.currentTarget.dataset.id).then(res=>{
      console.log(res);
      if(res.data.code == 200){
        this.onShow();
        wx.showToast({
          title: '删除成功',
        })
      }else{
        wx.showToast({
          title: '删除失败，请检查您的网络！',
          icon:'none'
        })
      }
     
    })

  },

  edit(e){
     console.log("编辑");
     console.log(e);
     let info = e.currentTarget.dataset.info;
     console.log(info);
    // 把数据放到data 中，然后打开面板。
     this.setData({
        addAdsFlag:true
     })
    //  给内存中添加数据,用于回显
    this.setData({
      //设置为编辑状态
      isEdit:true,
       id:info.id,
       name:info.contact,
       phone:info.phone,
       province:info.province,
       city:info.city,
       address:info.address,

    })

     

  },



  // 点击编辑按钮





 //点击下方添加按钮
  appendTo(e) {
      this.setData({
        addAdsFlag:true
      })
  },


// 弹出框的取消和确定按钮
  changeOk(){
    //关闭弹出框
    // this.setData({
    //    addAdsFlag:false
    // })
    // console.log("ok"+this.data.name);

    //数据验证部分
    if(this.data.name.length<1||this.data.name==undefined){
      wx.showToast({
        title: '请填写姓名哦',
        icon:'none'
      })
      return;
    }

    if(this.data.phone.length!=11){
       wx.showToast({
         title: '请输入正确的手机号码',
         icon:'none'
       })
       return;
    }

    if(this.data.address.length<5){
       wx.showToast({
         title: '请填写详细地址',
         icon:'none'
       })
       return;
    }

    if (this.data.province.length < 1||this.data.province == '省份') {
      wx.showToast({
        title: '请填写省份哦',
        icon: 'none'
      })
      return;
    }

    if (this.data.city.length <1||this.data.city == '城市') {
      wx.showToast({
        title: '请填写城市哦',
        icon: 'none'
      })
      return;
    }



    // 获取到所有的值，发送给后端
    let address = {
      id:this.data.isEdit?this.data.id:null,
      openId:wx.getStorageSync("loginInfo").openid,
      province:this.data.province,//省
      city:this.data.city,//市
      town:'',     //  区/县
      address:this.data.address,//  详细地址
      phone:this.data.phone,//  电话
      contact:this.data.name, //  联系人
      postalCode:'', //  邮政编码
      isDefault:1//  是否默认0否,1默认
    }


    console.log(address)
    addAddress(address).then(res => {
      console.log(res);
      if(res.data.code == 200){
        wx.showToast({
          title: res.data.msg,
        })


        // 刷新页面
        this.onShow();
      }else{
        wx.showToast({
          title: res.data.msg,
          icon: 'none'
        })
      }
     

    
    })


    // 修改成功，初始化表单数据
    this.initFormData();
    // 挂壁弹出框
    this.setData({
      addAdsFlag:false
    })

    

     
  },

  changeCancel(){
      // 关闭弹出框
      this.setData({
        addAdsFlag: false
      })
      console.log("cancel");

    // 退出后，初始化表单数据
    this.initFormData();
    
  },

  initFormData(){
    this.setData({
      isEdit: false,
      id: null,
      name: '',
      phone: '',
      province: '省份',
      city: '城市',
      address: '',
      provinces:[],
      citys:[]

    })
  },

  // 选择城市
  selCity(){
    console.log("选择城市"+this.data.citys);
    //判断省份的数组是不是空
    console.log(this.data.province.length)
    if(this.data.provinces.length<2){
        wx.showToast({
          title: '请先选择省份',
          icon:'none'
        })

        return;
    }
     this.setData({
       showPickerCity:true,
       city:this.data.citys[0]
     })

     
  },
 
// 选择省份
 selProvince(){
  //  判断本地有没有数据，没有数据的话去获取
   let allProvince = wx.getStorageSync("allProvince");
  // 如果本地有数据，那就把·他放到内存中
  // 如果本地没有的话，那么就去获取一下
  // 换取方法会自动把数据存储到内存中。
   if (allProvince){
      this.setData({
         allProvince,
      })

      //解析出省份放到列表里
      // 当点击弹出面板的取消和确定的时候就清除
      // 省份和城市的数据
     this.parseProvince()
       
   }else{
      // 本地没有，去获取省份，获取完之后会放到内存中，并且会缓存
      this.getAllProvince();
   }
    console.log("选择省份");

    this.setData({
      showPicker: true,
      province:this.data.provinces[0]
    })
 },

//  解析省份
 parseProvince(){
    let allProvince = this.data.allProvince;
    let provinces = allProvince.map(item=>{
      return item.province
    }) 

    this.setData({
      provinces,
    })
 },




  // 获取身份列表并且存储在本地
  getAllProvince() {
    getAllProvince().then(res => {
      if (res.data.code === 200) {
        console.log(res.data.data);
        wx.setStorageSync("allProvince", res.data.data);
        this.setData({
          allProvince: res.data.data
        })
        // 解析出省份列表
        this.parseProvince()
      } else {
        wx.showToast({
          icon: 'none',
          title: '服务器错误',
        })
      }
    })
  },



 







  // 获取输入框name 值
  setName(val){
     console.log(val.detail.value)
     this.setData({
       name:val.detail.value
     })
  },



  setAddress(val) {
    console.log(val.detail.value);
    this.setData({
         address:val.detail.value
    })
  },


  // 获取输入框手机号码
  setPhone(val){
     console.log(val.detail.value);
     this.setData({
       phone: val.detail.value
     })
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    // let that = this
    // if (options.type == "change") {
    //   this.setData({
    //     clickType: true
    //   })
    // }
  },


  // picker
  // 切换的时候触发
  onChange(event) {
    const { picker, value, index } = event.detail;
    console.log(event.detail);
    console.log(value)
    this.setData({
      province:value
    })


    //设置city的默认值是第一个
    // this.setData({
    //     city:value.
    // })
  },

  onChangeCity(event){
    const { picker, value, index } = event.detail;
    console.log(value)
    this.setData({
      city:value
    })
  },


  // picker 省份点击取消和确定
  onCancel() {
      console.log("取消");
      this.setData({
        showPicker:false
      })
      // 获取内存中省份的值
      let province = this.data.province;
      console.log(province+"11")
      // 根据省份获取到城市列表
      let allProvince = this.data.allProvince;
      console.log("222"+allProvince)
      let citys = allProvince.filter(item =>{
         return item.province == province;
      })
      
    console.log(citys)
      this.setData({
        citys: citys[0].citylist
      })
      
  },


//城市 picker 点击取消和确定
  onCancelCity(){
    console.log("城市取消");
    this.setData({
      showPickerCity: false
    })
  },


  // 使用微信上传地址

  toWX(e) { //使用微信地址
    let that = this;
    wx.getSetting({
      success(res) {
        console.log(res.authSetting['scope.address'])
        //没有开启权限
        if (res.authSetting['scope.address'] == false) {
          // 没有开启获取地址的权限
          wx.showModal({
            title: '权限设置?',
            content: '获取您的收货地址',
            success(res) {
              if (res.confirm) {
                console.log('用户点击确定')
                // 这个页面只会显示用户曾经请求过的权限列表
                wx.openSetting({
                  success(res) {
                    //授权成功再次获取地址信息
                    that.getWxAddress();
                  }
                })

              } else if (res.cancel) {
                console.log('用户点击取消')
              }
            }
          })
        } else {
          //开启了权限
          //用户拒绝一次就会关闭获取地址的权限 返回false
          // 一旦用户同意一次就会开启 返回true
          that.getWxAddress();
        }
      },
      fail(res) {
        console.log('功能未授权，无法使用')
      }
    })

  },


  getWxAddress() {
    let that = this;
    //开启获取地址的权限
    wx.chooseAddress({
      success(re) {
        console.log(re.userName)
        console.log(re.postalCode)
        console.log(re.provinceName)
        console.log(re.cityName)
        console.log(re.countyName)
        console.log(re.detailInfo)
        console.log(re.nationalCode)
        console.log(re.telNumber)

        let address = {
          openId: wx.getStorageSync("loginInfo").openid,
          province: re.provinceName,//省
          city: re.cityName,//市
          town: re.countyName,     //  区/县
          address: re.detailInfo,   //  详细地址
          phone: re.telNumber,   //  电话
          contact: re.userName, //  联系人
          postalCode: re.postalCode, //  邮政编码
          isDefault: 1//  是否默认0否,1默认
        }
        addAddress(address).then(res => {
          console.log(res);
          if (res.data.code == 200) {
            wx.showToast({
              title: res.data.msg,
            })
            // 刷新页面
            that.onShow();
          } else {
            wx.showToast({
              title: res.data.msg,
              icon: 'none'
            })
          }
        })
      },
      fail() {
        console.log("获取地址失败")
      }
    })
  },



 // editTo(e) { //修改信息
  //   // console.log(e.target.dataset.id)
  //   wx.navigateTo({
  //     url: '../setAddress/setAddress?Msg='+JSON.stringify(this.data.getAddress[e.target.dataset.id]),
  //   })
  // },


  // callAddressBack(e) {
  //   const pages = getCurrentPages()
  //   const prevPage = pages[pages.length - 2] // 上一页
  //   // console.log(prevPage.data.type)
  //   if (prevPage && prevPage.data.type == 'order') { //判断上一页是否是付款页
  //     prevPage.setData({ //设置上一页的data
  //       name: e.currentTarget.dataset.name,
  //       address: e.currentTarget.dataset.province + e.currentTarget.dataset.address,
  //       phone: e.currentTarget.dataset.phone,
  //     })

  //     if (this.data.clickType == true) {
  //       // console.log(getCurrentPages())
  //       wx.navigateBack({
  //         delta: 1
  //       })
  //     }
  //   }
  // },


  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  }
})